package com.my.house.vo;

import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Positive;
import jakarta.validation.constraints.Pattern;
import lombok.Data;
import org.hibernate.validator.constraints.Length;

import java.time.LocalDate;

/**
 * 合同请求实体
 * @author yangll
 */
@Data
public class ContractReqVO {

    /**
     * 合同id
     */
    private Long id;

    /**
     * 房间id
     */
    @NotNull(message = "房间ID不能为空")
    private Long roomId;

    /**
     * 开始日期
     */
    @NotNull(message = "开始日期不能为空")
    private LocalDate startDate;

    /**
     * 截止日期
     */
    @NotNull(message = "截止日期不能为空")
    private LocalDate endDate;

    /**
     * 每月租金
     */
    @NotNull(message = "每月租金不能为空")
    @Positive(message = "每月租金必须大于0")
    private Integer price;

    /**
     * 承租人姓名
     */
    @NotBlank(message = "承租人姓名不能为空")
    @Length(max = 30, message = "承租人姓名长度不能超过30个字符")
    private String lessee;

    /**
     * 承租人手机号
     */
    @NotBlank(message = "承租人手机号不能为空")
    @Pattern(regexp = "^1[3-9]\\d{9}$", message = "手机号格式不正确")
    private String lesseeMobile;

    /**
     * 承租人身份证号
     */
    @NotBlank(message = "承租人身份证号不能为空")
    @Pattern(regexp = "^[1-9]\\d{5}(18|19|20)\\d{2}(0[1-9]|1[0-2])(0[1-9]|[12]\\d|3[01])\\d{3}[0-9Xx]$", message = "身份证号格式不正确")
    private String lesseeNo;

    /**
     * 押金
     */
    @NotNull(message = "押金不能为空")
    @Positive(message = "押金必须大于0")
    private Integer deposit;

    /**
     * 备注
     */
    @Length(max = 60, message = "备注长度不能超过60个字符")
    private String remark;
}

